Skip to main content

外部関数の呼び出し

このメカニズムは、Unixドメインソケットを介してIECアプリケーションの外部関数を呼び出すために使用できます。これにより、独自の機能を作成できます。同時に、プロセスの分離が達成されます。 IECのインターフェースとして、 EXTAPI.UDSExternalFunction 機能ブロックは、 ExtensionAPI ライブラリ。Pythonでは、 ExternalFunctionBase クラスはこの目的で使用されます。これは、提供されている例で提供されています。

この例では、メカニズムの使用方法についても説明します。この例には、外部関数の呼び出しが実装された IEC プロジェクトが含まれています。さらに、この例には、呼び出される関数の実装が含まれています。 myExternalFunction Pythonで。

CODESYS Control Extension Package がインストールされると、以下のディレクトリに UDSExternalCallExample.project の例とPythonスクリプト uds_external_function.py がある: C:\Program Files\CODESYS <version>\CODESYS\CODESYS Control SL Extension Package\<version>\Examples\ExternalCall.

例、IECアプリケーション

の中に UDSExternalCallExample.project サンプルプロジェクト、新しい myExternalFunction 機能ブロックが作成されます。これにより、 EXTAPI.UDSExternalFunction タイプの入力と出力を備えたFB DINT。他のデータ型も可能です。最初に、Pythonで呼び出される関数の名前を渡す必要があります。このアドレスは一意である必要があります。

次のコードは、インターフェイスの外部関数の入力を追加するために使用されます。

Result := THIS^.AddParameter('parameterIn1', 'DINT', TO_STRING(diIn1));

次に、次のコードを使用して外部関数を呼び出します。

Result := THIS^.Call();

次のコードは、Pythonで実装された関数の戻り値をクエリするために使用されます。

Result := THIS^.GetParameter('parameterOut', 'DINT', ADR(sValue));

パラメータはタイプです string。したがって、目的のデータ型にキャストする必要があります。

例、Pythonスクリプト

重要

拡張 API 用に提供されている Python の例では、Python 3.0 が必要です。

含まれています uds_external_function.py サンプルは ExternalFunctionBase この機能のためにランタイムシステムとのUnixドメインソケット通信を提供するクラス。

The myExternalFunction 例で実装されたクラスは、 ExternalFunctionBase クラス。 Call() IECのメカニズムから呼び出される関数が必要です。入力パラメータと出力パラメータは、文字列のタプルの形式で渡されます。

例: {'parameterIn1': ('DINT', '11'), 'parameterIn2': ('DINT', '22')}

例では、 Call()関数は、2つの入力パラメーターの単純な追加を実装します。

def Call(self, dictParams):
    in1 = int(dictParams['parameterIn1'][1])
    in2 = int(dictParams['parameterIn2'][1])

    dictRetParams = {}
    dictRetParams['parameterOut'] = 'DINT', in1 + in2

    return dictRetParams
  1. スクリプトuds_external_function.py (CODESYS Control Extension Packageをインストールした後のディレクトリC:\Program Files\CODESYS <version>\CODESYS\CODESYS Control SL Extension Package\<version>\Examples\ExternalCall にある)をターゲット・デバイスにコピーします。

  2. スクリプトを実行する uds_external_function.py

  3. 次に、 UDSExternalCallExample.project のサンプルプロジェクト CODESYS

    プロジェクトが myExternalFunction() Python スクリプトの関数と 2 つの入力パラメータが追加されます。

Linuxのメンバーとしてのみインターフェースを使用する codesysuser ユーザー・グループ

はい

プロセス分離

はい